package br.unisinos.dao;

import java.util.List;



/**
 * 
 * 
 * Interface para as classes de acesso a dados com JdbcTemplate do spring
 *
 */
public interface BaseDAO<POJO> {
	
	/**
	 * Insere no banco o pojo passado
	 * @param pojo
	 * @return TODO
	 */
	public POJO insert(POJO pojo);
	
	/**
	 * Busca o POJO no banco pela pk do pojo passado
	 * @param pk
	 * @return
	 */
	public POJO findById(POJO pojo);
	
	/**
	 * Altera o POJO passado
	 * @param pojo
	 * @throws Exception 
	 */
	public void update(POJO pojo);
	
	/**
	 * Deleta o POJO passado
	 * @param pojo
	 */
	public void delete(POJO pojo);
	
	/**
	 * Busca todos os registros do POJO
	 * @return
	 */
	public List<POJO> findAll();

	/**
	 * Busca o ultimo registro do POJO
	 * @return
	 */
	public POJO findLast();

	/**
	 * Conta quantos registros do POJO existem
	 * @return
	 */
	public int count();

	/**
	 * Busca o primeito registro do POJO
	 * @return
	 */
	public POJO findFirst();

	/**
	 * Busca o ultimo id inserido
	 * @return
	 */
	public Long getLastId();

	
}
